Misc code cleanups from Alex.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 19 Sep 2002 01:57:15 +0000 (01:57 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 19 Sep 2002 01:57:15 +0000 (01:57 +0000)
gpsbabel/csv.c
gpsbabel/csv_util.c
gpsbabel/mxf.c
gpsbabel/ozi.c
gpsbabel/psp.c
gpsbabel/testo

index 8358b698fe493ca67b29b73c2038d6d1001a4e3f..e2b74404fbfda16704f3bf43ba61d0a6beca266c 100644 (file)
@@ -122,6 +122,7 @@ gpsutil_disp(waypoint *wpt)
 
        lon = wpt->position.longitude.degrees;
        lat = wpt->position.latitude.degrees;
+
         if (wpt->description) 
            wpt->description = csv_stringclean(wpt->description, ",\"");
 
index 35e18bd5e7ac3d4598e370a007f55f02e2b74694..fe0b440b081d6dc6428d4c7077d058e18cdb9768 100644 (file)
@@ -47,9 +47,8 @@ csv_stringclean(char *string, const char *chararray) {
     while (*lp) lp++;
     
     cp = chararray;
-    while (*cp) {
-
 
+    while (*cp) {
         p = string;
         while (*p) {
             if (*cp == *p) {
@@ -64,7 +63,6 @@ csv_stringclean(char *string, const char *chararray) {
     return (string);
 }
 
-
 /***********************************************************************************/
 /* csv_stringtrim() - trim whitespace and leading and trailing enclosures (quotes) */
 /*                    returns MODIFIED string.                                     */
@@ -160,11 +158,11 @@ csv_lineparse(char *stringstart, const char *delimited_by,
     /* length of delimiters and enclosures */
     dlen = strlen(delimited_by);
     elen = strlen(enclosed_in);
-
+    
     dfound = 0;
 
     while ((*p) && (!dfound)) {
-       if (strncmp(p, enclosed_in, elen) == 0) {
+        if ((elen) && (strncmp(p, enclosed_in, elen) == 0)) {
            if (enclosedepth)
                enclosedepth--;
            else
index 2641bcb1e064de3cc20cc5285e7337a8854da11b..ca062349e7d9fcfedf76248df324a5c3a58baeb7 100644 (file)
@@ -104,7 +104,7 @@ data_read(void)
                    break;
                case 3:
                    wpt_tmp->shortname = xstrdup(s);
-                   csv_stringtrim(wpt_tmp->shortname, "");
+                   wpt_tmp->shortname = csv_stringtrim(wpt_tmp->shortname, "");
                    break;
                case 4:
                     /* ignore.  another name-type  */
@@ -148,7 +148,10 @@ mxf_disp(waypoint * wpt)
     const char *color_hex = "ff0000";
 
     csv_stringclean(wpt->shortname, ",\"");
+    wpt->shortname = csv_stringtrim(wpt->shortname, "");
+    
     csv_stringclean(wpt->description, ",\"");
+    wpt->description = csv_stringtrim(wpt->description, "");
 
     fprintf(file_out, "%08.5f, %08.5f, \"%s\", \"%s\", \"%s\", %s, %d\n",
            wpt->position.latitude.degrees, wpt->position.longitude.degrees,
index 91f0bd2e45340b732c51e139e9529a087841b6fb..e64a69a39c2f5a0f43a11d98dfc4dfc5a00c5174 100644 (file)
@@ -85,7 +85,7 @@ data_read(void)
 
            /* data delimited by commas, possibly enclosed in quotes.  */
            s = buff;
-           s = csv_lineparse(s, ",", "\"", linecount);
+           s = csv_lineparse(s, ",", "", linecount);
 
            i = 0;
            while (s) {
@@ -96,7 +96,7 @@ data_read(void)
                case 1:
                    /* waypoint name */
                    wpt_tmp->shortname = xstrdup(s);
-                   csv_stringtrim(wpt_tmp->shortname, "");
+                   wpt_tmp->shortname = csv_stringtrim(wpt_tmp->shortname, "");
                    break;
                case 2:
                    /* degrees latitude */
@@ -161,7 +161,7 @@ data_read(void)
                }
                i++;
 
-               s = csv_lineparse(NULL, ",", "\"", linecount);
+               s = csv_lineparse(NULL, ",", "", linecount);
            }
            
            waypt_add(wpt_tmp);
index 826ec6418778728ddffd53de2a33d48a0114a3bf..32941e394a60e7a6ddf8d3e4042bbd17347a990b 100644 (file)
@@ -240,6 +240,18 @@ psp_disp(waypoint *wpt)
        char c;
        int i;
 
+        /* this output format pretty much requires a description and a shortname */
+        if (!wpt->shortname)  {
+            if (wpt->description)
+                wpt->shortname = xstrdup(wpt->description);
+            else 
+                wpt->shortname = xstrdup("");
+        }
+        if (!wpt->description)  {
+            wpt->description = xstrdup(wpt->shortname);
+        }
+        
+
         /* convert lat/long back to radians */
        lat = (wpt->position.latitude.degrees * M_PI) / 180.0;
         lon = (wpt->position.longitude.degrees * M_PI) / 180.0;
@@ -285,8 +297,8 @@ psp_disp(waypoint *wpt)
              fwrite(&tbuf[0], 1, 1, psp_file_out);              /* null */
         }
 
-        /*  1 byte string size */
         c = strlen(wpt->description);
+        /*  1 byte string size */
         fwrite(&c, 1, 1, psp_file_out);
 
         for (i = 0 ; wpt->description[i] ; i++) {
index 0b2c73d993dad6493735bd31e98d50e71390d462..90777e20ba3e2b842fd1ae65020cfa397b1577be 100755 (executable)
@@ -1,38 +1,43 @@
+
 PNAME=./gpsbabel
+TMPDIR=/tmp/gpsbabel.$$
+mkdir -p $TMPDIR
+trap "rm -fr $TMPDIR" 0 1 2 3 15
+
 
 # Geocaching .loc
-rm -f /tmp/gl.loc
-${PNAME} -i geo -f geocaching.loc -o geo -F /tmp/gl.loc
-diff /tmp/gl.loc reference
+rm -f ${TMPDIR}/gl.loc
+${PNAME} -i geo -f geocaching.loc -o geo -F ${TMPDIR}/gl.loc
+diff ${TMPDIR}/gl.loc reference
 
 # GPSUtil
-rm -f /tmp/gu.wpt
-${PNAME} -i geo -f geocaching.loc -o gpsutil -F /tmp/gu.wpt
-diff /tmp/gu.wpt reference
+rm -f ${TMPDIR}/gu.wpt
+${PNAME} -i geo -f geocaching.loc -o gpsutil -F ${TMPDIR}/gu.wpt
+diff ${TMPDIR}/gu.wpt reference
 
 # GPSman 
-rm -f /tmp/gm.gm /tmp/gm.gm+
-${PNAME} -i geo -f geocaching.loc -o gpsman -F /tmp/gm.gm
-${PNAME} -i gpsman -f /tmp/gm.gm -o gpsutil -F /tmp/gm.gm+
-diff /tmp/gm.gm+ /tmp/gu.wpt
+rm -f ${TMPDIR}/gm.gm ${TMPDIR}/gm.gm+
+${PNAME} -i geo -f geocaching.loc -o gpsman -F ${TMPDIR}/gm.gm
+${PNAME} -i gpsman -f ${TMPDIR}/gm.gm -o gpsutil -F ${TMPDIR}/gm.gm+
+diff ${TMPDIR}/gm.gm+ ${TMPDIR}/gu.wpt
 
 # GPX
-rm -f /tmp/gl.gpx /tmp/gpx.gpx
-${PNAME} -i geo -f geocaching.loc -o gpx -F /tmp/gl.gpx
-${PNAME} -i gpx -f /tmp/gl.gpx -o gpsutil -F /tmp/gpx.gpx
-diff /tmp/gpx.gpx /tmp/gu.wpt
+rm -f ${TMPDIR}/gl.gpx ${TMPDIR}/gpx.gpx
+${PNAME} -i geo -f geocaching.loc -o gpx -F ${TMPDIR}/gl.gpx
+${PNAME} -i gpx -f ${TMPDIR}/gl.gpx -o gpsutil -F ${TMPDIR}/gpx.gpx
+diff ${TMPDIR}/gpx.gpx ${TMPDIR}/gu.wpt
 
 # Magellan Mapsend
-rm -f /tmp/mm.mapsend /tmp/mm.gps
-${PNAME} -i geo -f geocaching.loc -o mapsend -F /tmp/mm.mapsend
-${PNAME} -i mapsend -f /tmp/mm.mapsend -o gpsutil -F /tmp/mm.gps
-diff /tmp/mm.gps /tmp/gu.wpt
+rm -f ${TMPDIR}/mm.mapsend ${TMPDIR}/mm.gps
+${PNAME} -i geo -f geocaching.loc -o mapsend -F ${TMPDIR}/mm.mapsend
+${PNAME} -i mapsend -f ${TMPDIR}/mm.mapsend -o gpsutil -F ${TMPDIR}/mm.gps
+diff ${TMPDIR}/mm.gps ${TMPDIR}/gu.wpt
 
 # Garmin Mapsource
-rm -f /tmp/mm.mapsource /tmp/ms.gps
-#${PNAME} -i geo -f geocaching.loc -o mapsource -F /tmp/mm.mapsource
-#${PNAME} -i mapsource -f /tmp/mm.mapsource -o gpsutil -F /tmp/ms.gps
-# diff /tmp/ms.gps /tmp/gu.wpt
+rm -f ${TMPDIR}/mm.mapsource ${TMPDIR}/ms.gps
+#${PNAME} -i geo -f geocaching.loc -o mapsource -F ${TMPDIR}/mm.mapsource
+#${PNAME} -i mapsource -f ${TMPDIR}/mm.mapsource -o gpsutil -F ${TMPDIR}/ms.gps
+# diff ${TMPDIR}/ms.gps ${TMPDIR}/gu.wpt
 
 # Magellan serial
 # TODO
@@ -40,29 +45,35 @@ rm -f /tmp/mm.mapsource /tmp/ms.gps
 
 # CSV (Comma separated value) data.
 
-#${PNAME} -i geo -f geocaching.loc -o csv -F /tmp/csv.csv
-#${PNAME} -i csv -f /tmp/csv.csv -o gpsutil -F /tmp/csv2.csv
-#diff /tmp/csv2.csv /tmp/gu.wpt
+#${PNAME} -i geo -f geocaching.loc -o csv -F ${TMPDIR}/csv.csv
+#${PNAME} -i csv -f ${TMPDIR}/csv.csv -o gpsutil -F ${TMPDIR}/csv2.csv
+#diff ${TMPDIR}/csv2.csv ${TMPDIR}/gu.wpt
 
 # PCX (Garmin mapsource import) file format
-rm -f /tmp/mm.pcx /tmp/pcx.gps
-${PNAME} -i geo -f geocaching.loc -o pcx -F /tmp/mm.pcx
-${PNAME} -i pcx -f /tmp/mm.pcx -o gpsutil -F /tmp/pcx.gps
-diff /tmp/mm.gps /tmp/gu.wpt
+rm -f ${TMPDIR}/mm.pcx ${TMPDIR}/pcx.gps
+${PNAME} -i geo -f geocaching.loc -o pcx -F ${TMPDIR}/mm.pcx
+${PNAME} -i pcx -f ${TMPDIR}/mm.pcx -o gpsutil -F ${TMPDIR}/pcx.gps
+diff ${TMPDIR}/mm.gps ${TMPDIR}/gu.wpt
 
 # Magellan file format
-${PNAME} -i magellan -f reference/magfile -o magellan -F /tmp/magfile
-diff /tmp/magfile reference/magfile
+${PNAME} -i magellan -f reference/magfile -o magellan -F ${TMPDIR}/magfile
+diff ${TMPDIR}/magfile reference/magfile
 
 # PSP (PocketStreets 2002 Pushpin (.PSP)) file format
-${PNAME} -i geo -f geocaching.loc -o psp -F /tmp/ps.psp
-diff /tmp/ps.psp reference
+rm -f ${TMPDIR}/ps.psp ${TMPDIR}/psp.psp
+${PNAME} -i psp -f reference/ps.psp -o psp -F ${TMPDIR}/psp.psp
+${PNAME} -i psp -f ${TMPDIR}/psp.psp -o psp -F ${TMPDIR}/ps.psp
+diff ${TMPDIR}/ps.psp reference
 
 # MXF (Maptech Exchange Format) file format
-${PNAME} -i geo -f geocaching.loc -o mxf -F /tmp/mxf.mxf
-diff /tmp/mxf.mxf reference
+rm -f ${TMPDIR}/mx.mxf ${TMPDIR}/mxf.mxf
+${PNAME} -i mxf -f reference/mxf.mxf -o mxf -F ${TMPDIR}/mx.mxf
+${PNAME} -i mxf -f ${TMPDIR}/mx.mxf -o mxf -F ${TMPDIR}/mxf.mxf
+diff ${TMPDIR}/mxf.mxf reference
 
 # OZI (OziExplorer 1.1) file format
-${PNAME} -i geo -f geocaching.loc -o ozi -F /tmp/ozi.ozi
-diff /tmp/ozi.ozi reference
+rm -f ${TMPDIR}/oz.ozi ${TMPDIR}/ozi.ozi
+${PNAME} -i ozi -f reference/ozi.ozi -o ozi -F ${TMPDIR}/oz.ozi
+${PNAME} -i ozi -f ${TMPDIR}/oz.ozi -o ozi -F ${TMPDIR}/ozi.ozi
+diff ${TMPDIR}/ozi.ozi reference